<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>新增页面</title>
    <link rel="stylesheet" href="/app/admin/component/pear/css/pear.css"/>
    <link rel="stylesheet" href="/app/admin/component/jsoneditor/css/jsoneditor.css"/>
    <link rel="stylesheet" href="/app/admin/admin/css/reset.css"/>
</head>
<body>

<form class="layui-form" action="">

    <div class="mainBox">
        <div class="main-container mr-5">

            <div class="layui-form-item">
                <label class="layui-form-label required">名称</label>
                <div class="layui-input-block">
                    <input type="text" name="name" value="" required lay-verify="required" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label required">密钥</label>
                <div class="layui-input-block">
                    <input type="text" name="secret" value="" required lay-verify="required|totp" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label required">发行方</label>
                <div class="layui-input-block">
                    <input type="text" name="issuer" value="" required lay-verify="required" class="layui-input" placeholder="请输入发行方">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label">开始纪元</label>
                <div class="layui-input-block">
                    <input type="number" name="t0" value="0" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label">时间间隔</label>
                <div class="layui-input-block">
                    <input type="number" name="t1" value="30" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label">散列算法</label>
                <div class="layui-input-block">
                    <input type="text" name="algo" value="sha1" class="layui-input">
                </div>
            </div>

            <div class="layui-form-item">
                <label class="layui-form-label">令牌位数</label>
                <div class="layui-input-block">
                    <input type="number" name="digits" value="6" class="layui-input">
                </div>
            </div>

        </div>
    </div>

    <div class="bottom">
        <div class="button-container">
            <button class="layui-icon layui-icon-help" id="helpButton"></button>
            <button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit=""
                    lay-filter="save">
                提交
            </button>
            <button type="reset" class="pear-btn pear-btn-md">
                重置
            </button>
        </div>
    </div>

</form>

<script src="/app/admin/component/layui/layui.js?v=2.8.12"></script>
<script src="/app/admin/component/pear/pear.js"></script>
<script src="/app/admin/component/jsoneditor/jsoneditor.js"></script>
<script src="/app/admin/admin/js/permission.js"></script>

<script>
    // 点击帮助按钮跳转到新页面
    document.getElementById("helpButton").addEventListener("click", function () {
        var helpPageUrl = "https://doc.iyuu.cn/guide/totp";
        window.open(helpPageUrl, "_blank");
    });

    // 相关接口
    const INSERT_API = "/admin/totp/insert";

    //提交事件
    layui.use(["form", "popup"], function () {
        // 字段验证允许为空
        layui.form.verify({
            phone: [/(^$)|^1\d{10}$/, "请输入正确的手机号"],
            email: [/(^$)|^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, "邮箱格式不正确"],
            url: [/(^$)|(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/, "链接格式不正确"],
            number: [/(^$)|^\d+$/, '只能填写数字'],
            date: [/(^$)|^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/, "日期格式不正确"],
            identity: [/(^$)|(^\d{15}$)|(^\d{17}(x|X|\d)$)/, "请输入正确的身份证号"],
            totp: function(value){
                var validChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
                var key = value.replace(/\s+/g, ''); // 去除空格
                if (key.length % 8 !== 0) {
                    return 'TOTP 密钥长度不正确，应为 16 或 32 位。';
                }
                for (var i = 0; i < key.length; i++) {
                    if (validChars.indexOf(key[i].toUpperCase()) === -1) {
                        return 'TOTP 密钥包含无效Base32，请检查。';
                    }
                }
            }
        });
        layui.form.on("submit(save)", function (data) {
            layui.$.ajax({
                url: INSERT_API,
                type: "POST",
                dateType: "json",
                data: data.field,
                success: function (res) {
                    if (res.code) {
                        return layui.popup.failure(res.msg);
                    }
                    return layui.popup.success("操作成功", function () {
                        parent.refreshTable();
                        parent.layer.close(parent.layer.getFrameIndex(window.name));
                    });
                }
            });
            return false;
        });
    });

</script>

</body>
</html>
